作為數位原生(Digital natives)出生的一代,網路與生活密不可分,人類已經無法割捨這個為生活帶來強大便利的工具。不過,你是否曾經好奇,資料在網路上是如何達到互通而不出錯的呢?
這一切有賴HTTP--全球資訊網 (WWW) 的資料通訊的基礎,是為了能夠讓資料在這個網際網路流通所訂定的通訊協定,同時它也是TCP/IP 的應用層協定。
最古老的HTTP協議於1991年出現,迄今已發展28年餘。最初設計僅是為了發布和接收html,第一版HTTP/0.9只接受Get請求方法,到現在的9種request method,分別為
GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH。
同場加映:HTTP 請求方法說明
客戶端(Client)意即在某個網站查找資料時的你,當你按下查找資料的button後,會發送Request到伺服器端(Server),它會吐回相應的Response及狀態碼。那麼Request和Response中在傳輸什麼東西呢?
After receiving and interpreting a request message, a server responds with an HTTP response message.
回應狀態碼 Status-Line
HTTP 狀態碼
回應標頭 response-header
附加的重要資訊
斷行符號 CRLF(carriage return followed by line feed)
嚴謹的換行標準
\r\n
回應內容主體 message-body
訊息中乘載資料的地方
無連接
指的是請求時建連接、請求完釋放連接,以儘快將資源釋放出來服務其他客戶端。
無狀態
無狀態的狀態,指的是事務的狀態,協議對於事務處理沒有記憶能力,Server不知道Client端是什麼狀態。
找尋資料發現HTTP Stateless從這兩個面向解釋,我比較好理解。
疑,不過懶得記密碼的我都會使用Cookie,這跟Stateless有關係嗎?
有的,因為HTTP的無狀態,Cookie的出現無非是懶人福星,它繞過HTTP的無狀態,保存資訊讓我們未來在使用服務時,可以直接向伺服器發送請求,減少重複的行為。
當使用者登入以後,就會在伺服器端產生一筆session紀錄,接著將session id透過cookie儲存在使用者的瀏覽器當中。這樣使用者點選下一個畫面,甚至是關掉瀏覽器再重新打開,只要瀏覽器中的cookie紀錄還在,就會跟request一起在session中尋找相符的使用者資訊,然後與其他資料做串接處理,最終回到使用者的瀏覽器。
引用Cookie 與 Session
不過,偷懶的行為同時也帶來的危險性,Cookie被盜就等於你的瀏覽器行為都被看光光了,是不是很可怕?
那我們今天先搞懂HTTP協議,明天再見啦~~
參考資料:
HTTP/1.1 — 訊息格式 (Message Format)
[探索 5 分鐘] HTTP 發展歷史
白話 Session 與 Cookie:從經營雜貨店開始